草庐IT

SQL Server 游标

全部标签

mongodb - 检查游标是否超时

是否可以检查数据库中打开的游标是否已超时?.alive属性似乎在没有实际调用next()的情况下不会更新,但这也会导致光标位置前进,这是我不希望的。背景:我将数据延迟加载到Web客户端,并在服务器端保持游标打开,以便客户端可以从中请求更多数据。我让Mongo的游标超时,因为这对于用例来说已经足够好了,并且简化了有保证的游标垃圾收集。但是,这让我不得不管理打开的游标引用Python端,这是我在偶尔的垃圾收集周期中所做的。在这个周期中,我想丢弃所有在Mongo端已经超时的游标。 最佳答案 根据changelog.rst对于PyMongo

javascript - 在 Meteor.js 上返回多个游标

这是我的重点:用户可以访问不同的聊天室。当他们这样做时,如果尚未添加ID,我会将聊天室ID推送到客户端的react数组中。如果没有,我将重新运行一个自动运行,该自动运行将订阅客户在此session中访问的每个聊天室的最后50条消息。但我希望他只能收到每个聊天室的最后50条消息!以前我有:Meteor.publish("getChatMess",function(cids){if(!Array.isArray(cids))cids=[cids];return(ChatMess.find({chatId:cids[i]},{sort:{date:-1},limit:(75*cids.len

python - InvalidDocument : Cannot encode object: <pymongo. 游标。游标对象位于

我试图将一个文档objectID作为属性(链接)存储到另一个文档中,但mongo一直给我这个错误。这行的语法有什么问题?foruinself.request.db.lyrics.find():u['forSong']=self.request.db.song.find({},{'_id':1})self.request.db.lyrics.save(u) 最佳答案 问题是find方法的结果是一个游标,而不是一个对象列表u['forSong']=self.request.db.song.find({},{'_id':1})是光标,不是

node.js - MongoDB NodeJS native 游标过早关闭

我正在对ursor的每个元素执行一个过程,我的集合有大约600万份文档,整个过程最多需要10个小时,因为我必须一次处理一个配置文件,而且这是一个有点复杂的过程每一个。varcursor=dbMain.collection("profiles").find({});vargetNext=function(){cursor.nextObject(processOne);};varprocessOne=function(err,profile){if(err){console.error("Errorloadingprofile",err);getNext();}elseif(profile

Java/mongodb - 如何实现聚合方法以将结果作为游标返回

我面临以下问题com.mongodb.CommandFailureException:{"serverUsed":"127.0.0.1:15847","errmsg":"exception:aggregationresultexceedsmaximumdocumentsize(16MB)","code":16389,"ok":0.0}谷歌搜索后我发现了一些解决方法,比如使用下面的代码{"$out":"temp_colls");useCursor=True第一个对我有用,但它花费了大约3-4分钟的时间。所以寻找我在下面尝试过的第二个选项原代码为dbObjArray=newBasicDBO

mongodb - mongoDB 中的游标隔离

首先请原谅我提出了一个愚蠢的问题,但我是mongodb的新手并且正在学习游标。我有一个问题,为什么我们需要游标隔离?手册上说“如果文档已更改,对文档的干预写操作可能会导致游标多次返回文档。”。我无法理解这一点。如果有人可以对此进行更多说明或举一些例子,我会很高兴。 最佳答案 好的,基本上MongoDB以100个为一组直接读取数据文件(可以用batch_size更改为最大16MB,基本上返回的是单个BSON文档)。这与写出静态结果集的SQL形成对比。所以你马上就会明白游标,如果它们有交错的操作,如果它们的排序发生变化,它们可以返回文档

javascript - MongoDB - 不一致的游标行为

谁能解释一下?[test]2014-01-3118:40:36.243>>>varrowNEW=db.people.find({"name":"joe","age":20});[test]2014-01-3118:40:42.853>>>rowNEW.forEach(function(){print('FOUNDROW');});FOUNDROW[test]2014-01-3118:40:47.163>>>rowNEW=db.people.find({"name":"joe","age":20});{"_id":ObjectId("52ec316d1d21069b6061b554"),

mongodb - 如何将带有 awaitdata 的可尾游标移动到末尾,以便我只获得新的更新

我正在尝试使用node.js驱动程序查看MongoDBoplog,理论上它可以工作,但它有相当长的启动时间,因为它似乎正在扫描整个集合。我在MongoDB文档中找到了这个:Becausetailablecursorsdonotuseindexes,theinitialscanforthequerymaybeexpensive;but,afterinitiallyexhaustingthecursor,subsequentretrievalsofthenewlyaddeddocumentsareinexpensive.有没有办法快速“耗尽”光标以开始拖尾?在我看来,Meteor的人已经解

php - PHP 中的 MongoDB 游标,它是在查询执行时将所有记录带到客户端还是在游标迭代时将所有记录一条一条地带到客户端?

我想用MongoDB优化我的查询,我想知道PHP客户端协议(protocol)如何处理从find()查询返回的游标,它是将大量结果带到客户端还是获取单个结果从远程数据库一次记录并返回给应用程序? 最佳答案 PHP驱动程序(以及我遇到的任何其他驱动程序)将根据批量大小获取结果。如果您在JSshell中运行直接查找查询,您也可以看到这一点,它会在返回的前20个结果的末尾说“有更多”之类的内容。然后调用iterate(it)函数将加载下一批等。在PHP中,批处理大小是可配置的,最大为总返回数据大小的限制以及有关限制等的一些其他警告,如下所

Python MongoDB (PyMongo) 多重处理游标

我正在尝试制作一个多处理MongoDB实用程序,它运行良好,但我认为我遇到了性能问题......即使有20名worker,它每秒处理的文档也不超过2800份......我认为我可以快5倍...这是我的代码,它没有做任何异常,只是打印到光标末尾的剩余时间。也许有更好的方法在MongoDB游标上执行多处理,因为我需要在每个包含17.4M记录集合的文档上运行一些东西,所以性能和更少的时间是必须的。START=time.time()defremaining_time(a,b):ifSTART:y=(time.time()-START)z=((a*y)/b)-yd=time.strftime('